package cn.com.open.itembank.dto;

import cn.com.open.itembank.common.BaseModel;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by lucky on 2017/9/13.
 */
public class QuestionModel extends BaseModel {
    /**
     * 构造函数
     * 用于构建试题实体后形成xml用
     */
    public QuestionModel() {
        this.i1 = "";
        this.i2 = "";
        this.i3 = 1;
        this.i4 = "";
        this.i5 = "";
        this.i6 = new ArrayList<>();
        this.i7 = new ArrayList<>();
        this.i8 = new ArrayList<>();
        this.i9 = 0;
        this.i10 = "";
        this.i11 = 0;
        this.i12 = "";
        this.i13 = 1;
        this.i14 = "";
        this.i15 = new ArrayList<>();
        this.i16 = 0;
        this.i17 = 0;
        this.i18 = "";
        this.i19 = 0;
        this.i20 = "";
        this.i21 = "";
        this.i22 = "";
        this.i23 = new String();
        this.i24 = null;
        this.i25 = 0;
        this.i26 = 1;
        this.i27 = 1;
        this.i28 = 0;
        this.i29 = null;
        this.i30 = "";
        this.i31 = 0;
        this.i32 = 0;
        this.i33 = "";
        this.i34 = 0;
        this.i35 = 0;
        this.sub = null;
        this.choices = new ArrayList<>();
    }

    //region property define
    /**
     * 试题标识
     */
    private String i1;

    /**
     * 试题题干
     */
    private String i2;

    /**
     * 试题题型
     * 单选 = 1,多选 = 2,判断 = 3,填空= 4,阅读理解 = 5,问答（简答） = 6,完型填空 = 7,匹配 = 8,上传附件 = 9,组合= 10,组合单选=11,组合多选=12,排序题=13,
     */
    private Integer i3;

    /**
     * 所属题库
     */
    private String i4;

    /**
     * 所属章节
     */
    private String i5;

    /**
     * 选项列表
     */
    private List<String> i6;

    /**
     * 正确答案
     */
    private List<String> i7;

    /**
     * 试题类别
     */
    private List<String> i8;

    /**
     * 试题分数
     */
    private double i9;

    /**
     * 试题解析
     */
    private String i10;

    /**
     * 选项是否乱序
     * 不乱序=0,乱序=1
     */
    private Integer i11;

    /**
     * 关键字
     */
    private String i12;

    /**
     * 难度系数
     */
    private double i13;

    /**
     * 所属机构
     */
    private String i14;

    /**
     * 学生作答结果
     */
    private List<String> i15;

    /**
     * 学生作答得分
     */
    private double i16;

    /**
     * 子试题个数
     */
    private Integer i17;

    /**
     * 所属APP
     */
    private String i18;

    /**
     * 媒体定义
     * 无=0,音频=1,视频=2
     */
    private Integer i19;

    /**
     * 媒体时长
     */
    private String i20;

    /**
     * 用户自定义
     */
    private String i21;

    /**
     * 创建者标识
     */
    private String i22;

    /**
     * 添加时间
     */
    private String i23;

    /**
     * 最后更新时间
     */
    private String i24;

    /**
     * 是否审核
     * 0未审核,1已审核
     */
    private Integer i25;

    /**
     * 掌握程度
     * 1了解,2掌握,3重点掌握
     */
    private Integer i26;

    /**
     * 认知分类
     * 1识记,2能力,3应用
     */
    private Integer i27;

    /**
     * 试题编号
     */
    private Integer i28;

    /**
     * 曝光时间
     */
    private String i29;

    /**
     * 外部大题标识，大题试题新增接口时为大题标识
     */
    private String i30;

    /**
     * 建议答题时间（分钟）
     */
    private Integer i31;

    /**
     * 是否主观题
     * 客观题0，主观题1
     */
    private Integer i32;

    /**
     * 试题标题(短)（获取试题列表显示时用）
     */
    private String i33;

    /**
     * 引用数量
     */
    private Integer i34;

    /**
     * 停/启用状态 启用0，停用1
     */
    private Integer i35;

    /**
     * 子试题集合
     */
    private List<QuestionModel> sub;

    /**
     * 选项列表（只读），用于绑定试题信息用
     */
    private List<Choice> choices;

    /**
     * Gets 试题标识.
     *
     * @return 试题标识 i 1
     */
    @JsonProperty("I1")
    public String getI1() {
        return i1;
    }

    /**
     * Sets 试题标识.
     *
     * @param I1 试题标识
     */
    @JsonProperty("I1")
    public void setI1(String I1) {
        this.i1 = I1;
    }

    /**
     * Gets 试题标题.
     *
     * @return 试题标题 i 2
     */
    @JsonProperty("I2")
    public String getI2() {
        if (i2 == null) {
            i2 = "";
        }
        return i2;
    }

    /**
     * Sets 试题标题.
     *
     * @param i2 试题标题
     */
    @JsonProperty("I2")
    public void setI2(String i2) {
        this.i2 = i2;
    }

    /**
     * Gets 试题题型.
     *
     * @return 试题题型 i 3
     */
    @JsonProperty("I3")
    public Integer getI3() {
        return i3;
    }

    /**
     * Sets 试题题型.
     *
     * @param i3 试题题型
     */
    @JsonProperty("I3")
    public void setI3(Integer i3) {
        this.i3 = i3;
    }

    /**
     * Gets 所属题库.
     *
     * @return 所属题库 i 4
     */
    @JsonProperty("I4")
    public String getI4() {
        return i4;
    }

    /**
     * Sets 所属题库.
     *
     * @param i4 所属题库
     */
    @JsonProperty("I4")
    public void setI4(String i4) {
        this.i4 = i4;
    }

    /**
     * Gets 所属章节.
     *
     * @return 所属章节 i 5
     */
    @JsonProperty("I5")
    public String getI5() {
        return i5;
    }

    /**
     * Sets 所属章节.
     *
     * @param i5 所属章节
     */
    @JsonProperty("I5")
    public void setI5(String i5) {
        this.i5 = i5;
    }

    /**
     * Gets 选项列表.
     *
     * @return 选项列表 i 6
     */
    @JsonProperty("I6")
    public List<String> getI6() {
        return i6;
    }

    /**
     * Sets 选项列表.
     *
     * @param i6 选项列表
     */
    @JsonProperty("I6")
    public void setI6(List<String> i6) {
        this.i6 = i6;
    }

    /**
     * Gets 正确答案.
     *
     * @return 正确答案 i 7
     */
    @JsonProperty("I7")
    public List<String> getI7() {
        return i7;
    }

    /**
     * Sets 正确答案.
     *
     * @param i7 正确答案
     */
    @JsonProperty("I7")
    public void setI7(List<String> i7) {
        this.i7 = i7;
    }

    /**
     * Gets 试题类别.
     *
     * @return 试题类别 i8
     */
    @JsonProperty("I8")
    public List<String> getI8() {
        return i8;
    }

    /**
     * Sets 试题类别.
     *
     * @param i8 试题类别
     */
    @JsonProperty("I8")
    public void setI8(List<String> i8) {
        this.i8 = i8;
    }

    /**
     * Gets 试题分数.
     *
     * @return 试题分数 i 9
     */
    @JsonProperty("I9")
    public double getI9() {
        return i9;
    }

    /**
     * Sets 试题分数.
     *
     * @param i9 试题分数
     */
    @JsonProperty("I9")
    public void setI9(double i9) {
        this.i9 = i9;
    }

    /**
     * Gets 试题解析.
     *
     * @return 试题解析 i10
     */
    @JsonProperty("I10")
    public String getI10() {
        return i10;
    }

    /**
     * Sets 试题解析.
     *
     * @param i10 试题解析
     */
    @JsonProperty("I10")
    public void setI10(String i10) {
        this.i10 = i10;
    }

    /**
     * Gets 选项是否乱序.
     *
     * @return 选项是否乱序 i 11
     */
    @JsonProperty("I11")
    public Integer getI11() {
        return i11;
    }

    /**
     * Sets 选项是否乱序.
     *
     * @param i11 选项是否乱序
     */
    @JsonProperty("I11")
    public void setI11(Integer i11) {
        this.i11 = i11;
    }

    /**
     * Gets 关键字.
     *
     * @return 关键字 i 12
     */
    @JsonProperty("I12")
    public String getI12() {
        return i12;
    }

    /**
     * Sets 关键字.
     *
     * @param i12 关键字
     */
    @JsonProperty("I12")
    public void setI12(String i12) {
        i12 = i12;
    }

    /**
     * Gets 难度系数.
     *
     * @return 难度系数 i 13
     */
    @JsonProperty("I13")
    public double getI13() {
        return i13;
    }

    /**
     * Sets 难度系数.
     *
     * @param i13 难度系数
     */
    @JsonProperty("I13")
    public void setI13(double i13) {
        this.i13 = i13;
    }

    /**
     * Gets 所属机构.
     *
     * @return 所属机构 i 14
     */
    @JsonProperty("I14")
    public String getI14() {
        return i14;
    }

    /**
     * Sets 所属机构.
     *
     * @param i14 所属机构
     */
    @JsonProperty("I14")
    public void setI14(String i14) {
        this.i14 = i14;
    }

    /**
     * Gets 学生作答结果.
     *
     * @return 学生作答结果 i 15
     */
    @JsonProperty("I15")
    public List<String> getI15() {
        return i15;
    }

    /**
     * Sets 学生作答结果.
     *
     * @param i15 学生作答结果
     */
    @JsonProperty("I15")
    public void setI15(List<String> i15) {
        this.i15 = i15;
    }

    /**
     * Gets 学生作答得分.
     *
     * @return 学生作答得分 i 16
     */
    @JsonProperty("I16")
    public double getI16() {
        return i16;
    }

    /**
     * Sets 学生作答得分.
     *
     * @param i16 学生作答得分
     */
    @JsonProperty("I16")
    public void setI16(double i16) {
        this.i16 = i16;
    }

    /**
     * Gets 子试题个数.
     *
     * @return 子试题个数 i 17
     */
    @JsonProperty("I17")
    public Integer getI17() {
        return i17;
    }

    /**
     * Sets 子试题个数.
     *
     * @param i17 子试题个数
     */
    @JsonProperty("I17")
    public void setI17(Integer i17) {
        this.i17 = i17;
    }

    /**
     * Gets 所属APP.
     *
     * @return the 所属APP
     */
    @JsonProperty("I18")
    public String getI18() {
        return i18;
    }

    /**
     * Sets 所属APP.
     *
     * @param i18 所属APP
     */
    @JsonProperty("I18")
    public void setI18(String i18) {
        this.i18 = i18;
    }

    /**
     * Gets 媒体定义.
     *
     * @return 媒体定义 i 19
     */
    @JsonProperty("I19")
    public Integer getI19() {
        return i19;
    }

    /**
     * Sets 媒体定义.
     *
     * @param i19 媒体定义
     */
    @JsonProperty("I19")
    public void setI19(Integer i19) {
        this.i19 = i19;
    }

    /**
     * Gets 媒体时长.
     *
     * @return 媒体时长 i 20
     */
    @JsonProperty("I20")
    public String getI20() {
        return i20;
    }

    /**
     * Sets 媒体时长.
     *
     * @param i20 媒体时长
     */
    @JsonProperty("I20")
    public void setI20(String i20) {
        this.i20 = i20;
    }

    /**
     * Gets 用户自定义.
     *
     * @return the 用户自定义
     */
    @JsonProperty("I21")
    public String getI21() {
        return i21;
    }

    /**
     * Sets 用户自定义.
     *
     * @param i21 用户自定义
     */
    @JsonProperty("I21")
    public void setI21(String i21) {
        this.i21 = i21;
    }

    /**
     * Gets 创建者标识
     *
     * @return 创建者标识 i 22
     */
    @JsonProperty("I22")
    public String getI22() {
        return i22;
    }

    /**
     * Sets 创建者标识.
     *
     * @param i22 创建者标识
     */
    @JsonProperty("I22")
    public void setI22(String i22) {
        this.i22 = i22;
    }

    /**
     * Gets 添加时间.
     *
     * @return 添加时间 i 23
     */
    @JsonProperty("I23")
    public String getI23() {
        return i23;
    }

    /**
     * Sets 添加时间.
     *
     * @param i23 添加时间
     */
    @JsonProperty("I23")
    public void setI23(String i23) {
        this.i23 = i23;
    }

    /**
     * Gets 最后更新时间.
     *
     * @return 最后更新时间 i 24
     */
    @JsonProperty("I24")
    public String getI24() {
        return i24;
    }

    /**
     * Sets 最后更新时间.
     *
     * @param i24 最后更新时间
     */
    @JsonProperty("I24")
    public void setI24(String i24) {
        this.i24 = i24;
    }

    /**
     * Gets 是否审核.
     *
     * @return 是否审核 i 25
     */
    @JsonProperty("I25")
    public Integer getI25() {
        return i25;
    }

    /**
     * Sets 是否审核.
     *
     * @param i25 是否审核
     */
    @JsonProperty("I25")
    public void setI25(Integer i25) {
        this.i25 = i25;
    }

    /**
     * Gets 掌握程度.
     *
     * @return 掌握程度 i 26
     */
    @JsonProperty("I26")
    public Integer getI26() {
        return i26;
    }

    /**
     * Sets 掌握程度.
     *
     * @param i26 掌握程度
     */
    @JsonProperty("I26")
    public void setI26(Integer i26) {
        this.i26 = i26;
    }

    /**
     * Gets 认知分类.
     *
     * @return 认知分类 i 27
     */
    @JsonProperty("I27")
    public Integer getI27() {
        return i27;
    }

    /**
     * Sets 认知分类.
     *
     * @param i27 认知分类
     */
    @JsonProperty("I27")
    public void setI27(Integer i27) {
        this.i27 = i27;
    }

    /**
     * Gets 试题编号.
     *
     * @return 试题编号 i 28
     */
    @JsonProperty("I28")
    public Integer getI28() {
        return i28;
    }

    /**
     * Sets 试题编号.
     *
     * @param i28 试题编号
     */
    @JsonProperty("I28")
    public void setI28(Integer i28) {
        this.i28 = i28;
    }

    /**
     * Gets 曝光时间.
     *
     * @return 曝光时间 i 29
     */
    @JsonProperty("I29")
    public String getI29() {
        return i29;
    }

    /**
     * Sets 曝光时间.
     *
     * @param i29 曝光时间
     */
    @JsonProperty("I29")
    public void setI29(String i29) {
        this.i29 = i29;
    }

    /**
     * Gets 外部大题标识.
     *
     * @return 外部大题标识 i 30
     */
    @JsonProperty("I30")
    public String getI30() {
        return i30;
    }

    /**
     * Sets 外部大题标识.
     *
     * @param i30 外部大题标识
     */
    @JsonProperty("I30")
    public void setI30(String i30) {
        this.i30 = i30;
    }

    /**
     * Gets 建议答题时间.
     *
     * @return 建议答题时间 i 31
     */
    @JsonProperty("I31")
    public Integer getI31() {
        return i31;
    }

    /**
     * Sets 建议答题时间.
     *
     * @param i31 建议答题时间
     */
    @JsonProperty("I31")
    public void setI31(Integer i31) {
        this.i31 = i31;
    }

    /**
     * Gets 是否主观题.
     *
     * @return 是否主观题 i 32
     */
    @JsonProperty("I32")
    public Integer getI32() {
        return i32;
    }

    /**
     * Sets 是否主观题.
     *
     * @param i32 是否主观题
     */
    @JsonProperty("I32")
    public void setI32(Integer i32) {
        this.i32 = i32;
    }

    /**
     * Gets 试题标题(短).
     *
     * @return 试题标题(短) i 33
     */
    @JsonProperty("I33")
    public String getI33() {
        return i33;
    }

    /**
     * Sets 试题标题(短).
     *
     * @param i33 试题标题(短)
     */
    @JsonProperty("I33")
    public void setI33(String i33) {
        this.i33 = i33;
    }

    /**
     * Gets 引用数量.
     *
     * @return 引用数量 i 34
     */
    @JsonProperty("I34")
    public Integer getI34() {
        return i34;
    }

    /**
     * Sets 引用数量.
     *
     * @param i34 引用数量
     */
    @JsonProperty("I34")
    public void setI34(Integer i34) {
        this.i34 = i34;
    }

    /**
     * Gets 停/启用状态.
     *
     * @return 停 /启用状态
     */
    @JsonProperty("I35")
    public Integer getI35() {
        return i35;
    }

    /**
     * Sets 停/启用状态.
     *
     * @param i35 停/启用状态
     */
    @JsonProperty("I35")
    public void setI35(Integer i35) {
        this.i35 = i35;
    }

    /**
     * Gets 子试题集合.
     *
     * @return 子试题集合 sub
     */
    @JsonProperty("Sub")
    public List<QuestionModel> getSub() {
        if (sub == null) {
            sub = new ArrayList<>();
        }
        return sub;
    }

    /**
     * Sets 子试题集合.
     *
     * @return 子试题集合 sub
     */
    @JsonProperty("Sub")
    public void setSub(List<QuestionModel> sub) {
        this.sub = sub;
    }

    /**
     * Gets choices.
     *
     * @return the choices
     */
    @JsonProperty("Choices")
    public List<Choice> getChoices() {
        return choices;
    }
    //endregion
}
